package test2;
/*
引用对象的实例方法
定义一个类(PrintString),里面定义一个方法
    public void printUpper(String s):把字符串参数变成大写的数据，在控制台输出
    定义一个接口(Printer),里面定义一个抽象方法
    void printUpperCase(String s)
    定义一个测试类(PrinterDemo),在测试类中提供两个方法
    一个方法是：usePrinter(Printer p)
    一个方法是主方法，在主方法中调用usePrinter方法
 */
public class PrintDemo {
    public static void main(String[] args) {
        //用Lambda表达式方式将usePrinter调用
        usePrinter(s ->
//            String result=s.toUpperCase();
//            System.out.println(result);
            System.out.println(s.toUpperCase())
        );

        //方法引用改进
        //对象实例方法
        PrintString ps=new PrintString();
        //用对象调实现类里面的方法
        usePrinter(ps::printUpper);

        //Lambda表达式被对象的实例方法替代时，他的形式参数全部传递给该方法作为参数

    }
    public static void usePrinter(Printer p){
        p.useUppercase("hello world");
    }
}
